package com.chengcang.admin.modules.busi.service;

import com.chengcang.admin.modules.busi.dto.BusiDemandDTO;
import com.chengcang.admin.modules.busi.dto.BusiDemandDetailDTO;
import com.chengcang.admin.modules.busi.dto.TransferOrderDTO;
import com.chengcang.admin.modules.busi.entity.BusiDemandEntity;
import com.chengcang.admin.modules.sys.dto.SysTenantDTO;
import com.chengcang.common.page.PageData;
import com.chengcang.common.service.CrudService;
import com.chengcang.common.utils.Result;

import java.util.List;
import java.util.Map;

/**
 * 需求接口
 *
 * @author bibajin
 * @since 1.0.0 2023-01-10
 */
public interface BusiDemandService extends CrudService<BusiDemandEntity, BusiDemandDTO> {


    /**
     * 分页查询
     * @param params
     * @return
     */
    //PageData<BusiDemandDTO> listPage(Map<String, Object> params);

    /**
     * 根据客户id查询需求详情
     *
     * @param
     * @return
     */
    BusiDemandDetailDTO getDeamndDetailByTenantId(Long id);

    /**
     * 新增需求单
     *
     * @param dto
     */
    void saveDemand(BusiDemandDTO dto);

    /**
     * 根据供应商名称模糊查询
     *
     * @param
     * @return
     */
    List<SysTenantDTO> getTenantByTenantName(String name);

    /**
     * 转单
     *
     * @param transferOrderDto
     */
    void transferDemandOrder(TransferOrderDTO transferOrderDto);

    /**
     * 关闭需求单
     *
     * @param id
     * @param reason
     */
    void closeDemand(Long id, String reason);

    /**
     * 新增需求的时候 查询发票信息和地址信息
     *
     * @param
     * @return
     */
    Result<BusiDemandDetailDTO> getInvoiceAndAddress(Long demandId);

    /**
     * 履约分页查询
     *
     * @param params
     * @return
     */
    PageData<BusiDemandDTO> appoint(Map<String, Object> params);

    /**
     * 根据需求编号获取需求
     *
     * @param demandNo
     * @return
     */
    BusiDemandDTO getByDemandNo(String demandNo);
}
